In the context of computer data security, user authentication is the process of a computer system reliably verifying the identity of a user. Password-based user authentication refers to a secret quantity (the "password") that the user communicates to the system to prove that she knows it. Computer systems sometimes store passwords in a data store that is not secure, and so there is a risk that the passwords might be read by an attacker. The password can be stored in a manner that allows a secret password to be verified easily, but does not leave the secret password exposed. For example, the hash of a password, rather than the password itself, can be stored in the system. When a user submits a "claimed" password, a submission that requires verification to determine if it is, in fact, the actual password, the claimed password is hashed, meaning that a one-way, not easily reversible, function is performed using the password as an input such that the result of the function is relatively unique to the password, and does not provide enough information to recover the password. The hash of the claimed password is compared to the stored hash of the actual password. If the hash of the claimed password is identical to the hash of the actual password, then the user is authenticated. An attacker who gains access to the hash of the password cannot readily discern the password from the hash of the password due to the one-way property of the hash function.
When a system is designed such that the same user would benefit from authentication on multiple systems, it becomes necessary for the user to maintain passwords on each system. It can be unwieldy for a user to remember different passwords for multiple systems, and a user generally prefers to have the same password on all systems. When a user changes her password on one system, the user generally prefers to have the password automatically changed, also referred to as synchronized, on other systems. This can be accomplished by propagating a password from a first system, system A, to a second system, system B.
Depending on the systems, and the links between them, the communications channel between systems A and B may not be secure. In addition, it may be necessary to verify that the password propagated from system A to system B actually comes from system A, and not from an attacker.